/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.os.dao.zakharov;

import edu.os.dao.zakharov.interfacedao.ApplicationDAO;
import edu.os.dao.zakharov.interfacedao.PaymentSystemDAO;
import edu.os.dao.zakharov.interfacedao.UserPaymentSystemDAO;
import edu.os.dao.zakharov.interfacedao.RegistrationDAO;
import edu.os.dao.zakharov.interfacedao.RoleUserDAO;
import edu.os.dao.zakharov.interfacedao.RequisitesDAO;
import edu.os.dao.zakharov.interfacedao.UserRolesDAO;
import edu.os.dao.zakharov.interfacedao.UsersDAO;
import edu.os.dao.zakharov.oracledao.OracleDAOFactory;

public abstract class DAOFactory {

    public abstract ApplicationDAO getApplicationDAO();
    
    public abstract UsersDAO getUsersDAO();

    public abstract UserRolesDAO getUserRolesDAO();

    public abstract RoleUserDAO getRoleUserDAO();

    public abstract RegistrationDAO getRegistrationDAO();

    public abstract UserPaymentSystemDAO getUserPaymentSystemDAO();

    public abstract PaymentSystemDAO getPaymentSystemDAO();

    public abstract RequisitesDAO getRequisitesDAO();

    public static DAOFactory getDAOFactory(EnumDataSource dataSource) {
        switch(dataSource) {
            case ORACLE:
                return new OracleDAOFactory();
            default:
                throw new UnsupportedOperationException("Not supported yet.");
        }
    }
    
}
